/**
 * Copyright(c) 2013 Jade Techonologies Co., Ltd.
 *
 * History:
 *   13-4-14 下午3:56 Created by dwzhang
 */
package com.jade.framework.base.criterion.expression;

import com.jade.framework.base.criterion.Criterion;

/**
 * 所有涉及到一个属性的表达式.
 *
 * @author dwzhang
 * @version 1.0 13-4-14 下午3:56
 */
public class AbstractPropertyExpression implements Criterion
{
    /** entity实体名称 */
    protected final String entityName;

    /** prop属性名称 */
    protected final String propName;

    /**
     * 构造函数.
     *
     * @param entityName 实体名称
     * @param propName   属性名称
     */
    protected AbstractPropertyExpression(String entityName, String propName)
    {
        this.entityName = entityName;
        this.propName = propName;
    }

    /**
     * 构造函数.
     *
     * @param propName 属性名称
     */
    protected AbstractPropertyExpression(String propName)
    {
        this.entityName = null;
        this.propName = propName;
    }

    /**
     * 获取属性名称.
     *
     * @return 属性名称
     */
    public String getPropName()
    {
        return propName;
    }

    /**
     * 获取实体名称.
     *
     * @return 属性名称
     */
    public String getEntityName()
    {
        return entityName;
    }

    /**
     * 获取组装后的名称.
     *
     * @return 组装后的名称
     */
    public String getFullName()
    {
        if (entityName == null) {
            return propName;
        }
        else {
            return entityName + "." + propName;
        }
    }
}

